/*
 * Copyright 2010 Joshua Smith and Nelson Llewellyn
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package norse.model;

import java.util.List;

/**
 * Network host.
 */
public class NorseHost {

        private boolean up;
        private List<NorseAddress> addresses;
        private List<String> hostnames;
        private List<NorsePort> ports;


        @Override
        public String toString() {
            StringBuilder bld = new StringBuilder();
            bld.append("Host: ");
            bld.append("addresses: [");
            for (NorseAddress address : addresses) {
                bld.append(address);
                bld.append(" "); // TODO come back and fix this so it uses commas
            }
            bld.append("] ");
            bld.append("hostnames: [");
            for (String hostname : hostnames) {
                bld.append(hostname);
                bld.append(" "); // TODO come back and fix this so it uses commas
            }
            bld.append("] ");
            bld.append("ports: [");
            for (NorsePort port : ports) {
                bld.append(port);
                bld.append(" "); // TODO come back and fix this so it uses commas
            }
            bld.append("]");
            bld.append("\n");
            return bld.toString();
        }

    /**
     * Accessor.
     *
     * @return the up
     */
    public boolean isUp() {
        return up;
    }

    /**
     * Mutator.
     *
     * @param up the up to set
     */
    public void setUp(boolean up) {
        this.up = up;
    }

    /**
     * Accessor.
     *
     * @return the addresses
     */
    public List<NorseAddress> getAddresses() {
        return addresses;
    }

    /**
     * Mutator.
     *
     * @param addresses the addresses to set
     */
    public void setAddresses(List<NorseAddress> addresses) {
        this.addresses = addresses;
    }

    /**
     * Accessor.
     *
     * @return the hostnames
     */
    public List<String> getHostnames() {
        return hostnames;
    }

    /**
     * Mutator.
     *
     * @param hostnames the hostnames to set
     */
    public void setHostnames(List<String> hostnames) {
        this.hostnames = hostnames;
    }

    /**
     * Accessor.
     *
     * @return the ports
     */
    public List<NorsePort> getPorts() {
        return ports;
    }

    /**
     * Mutator.
     * 
     * @param ports the ports to set
     */
    public void setPorts(List<NorsePort> ports) {
        this.ports = ports;
    }

}
